#!/usr/bin/env python
# -*- coding: latin-1 -*-

from modelo.batalla_naval import Barco, Posicion, Tablero
from vista import TAMANIO
from vista.Menu import *
from vista.Grilla import *
from network.Server import BatallaServer
from network.Client import BatallaClient
from time import time, sleep
import tkMessageBox
from thread import *
import sys

def conseguirIP():
	from urllib import urlopen
	from re import search
	raw = urlopen("http://www.whatismyipaddress.com").read()
	m = search("name=\"LOOKUPADDRESS\"\\s*value=\"(.*?)\"", raw)
	return m.group(1)

def espera(menu, nombre, ip, passwd):
	cadena  = "Datos del servidor:\n"
	m = 20 - len(nombre)
	cadena += "Nombre_" + "_"*m + nombre + "\n"
	n = 20 - len(ip)
	cadena += "IP_____" + "_"*n + ip + "\n"
	s = 20 - len(passwd)
	cadena += "Pass___" + "_"*s + passwd
	menu.popup("Esperando conexiones", cadena)

def main():
	menu = Menu()
	nombre = menu.fieldup("Bienvenido a la Batalla Naval", "Para comenzar ingrese su nombre:")
	server_ip = '127.0.0.1'
	passwd = ""
	opcion = menu.select()
	if opcion:
		passwd  = str("%04d" % (int(time()*10) % 10000))
		try:
			ip = conseguirIP()
		except:
			menu.popup("ERROR", "Error al conectar a internet")
			sys.exit(1)
		server = BatallaServer(passwd)
		start_new_thread(server.Launch, ())
		espera(menu, nombre, ip, passwd)
	else:
		server_ip = menu.fieldup("Ingreso requerido", "Ingrese la dirección IP del host:")
		passwd = menu.fieldup("Ingreso requerido", "Ingrese el password:")

	cliente = BatallaClient(server_ip, 31425, passwd, nombre, Tablero(TAMANIO,TAMANIO), opcion)
	sleep(0.3)
	cliente.Loop()
	barcos = [Barco(nombre="Crucero", largo=3), Barco(nombre="Pesquero", largo=2), Barco(nombre="Buque", largo=5)]
	sleep(0.3)
	cliente.Loop()
	grilla = Grilla(barcos, cliente)
	grilla.update()
	grilla.Jugar()
	
if __name__ == '__main__':
	main()
